import _log from '../logger'

/**
 * 响应拦截
 * @param {Object} http
 */
module.exports = (vm) => {
  const autolog = _log.genLogger(vm)
  uni.$u.http.interceptors.response.use(
    (response) => {
      uni.hideLoading()
      autolog(response, '请求响应：')
      if (response.errMsg == 'request:fail ') {
        return Promise.reject('请求无响应')
      }
      // 正常请求返回
      const data = response.data

      switch (data.code) {
        case -1:
        case '-1':
          return Promise.reject(data.data)
        case 402:
        case '402':
          vm.$store.dispatch('user/getToken', { Wid: vm.$store.getters.wid })
          return Promise.reject('操作失败，登录过期已重新登录！请重试当前操作！')
        case 403:
        case '403':
          return Promise.reject('无效token!')
        case 0:
        case '0':
          return Promise.resolve(data.data)
        default:
          return Promise.reject('未知错误码')
      }
      // if (data.code == -1) {
      //   // 请求返回错误 -1
      // }

      // if (data.code == -1) {
      //   // 请求返回错误 -1
      //   return Promise.reject(data.data)
      // }

      // if (data.code == 402) {
      //   // 请求返回错误 token 过期
      //   vm.$store.dispatch('user/getToken', { Wid: vm.$store.getters.wid }).then((res) => {
      //     vm.$alert('操作失败，登录过期已重新登录！请重试当前操作！')
      //     return Promise.reject()
      //   })
      // }

      // if (data.code != 0) {
      //   // 未知错误码
      //   return Promise.reject('未知错误码')
      // }

      // return Promise.resolve(data.data)
    },
    (response) => {
      // 请求无响应：无网络、地址错误
      autolog(response, '请求无响应：无网络、地址错误', '请求返回')
      uni.hideLoading()
      return Promise.reject('请求无响应：无网络或地址错误')
    }
  )
}
